#ifndef GAMEROOM_H
#define GAMEROOM_H

#include <QMainWindow>
#include <QWidget>
#include <QSound>

// 枚举蛇移动的方向
enum class SnakeDirect
{
    UP = 0,
    DOWN,
    LEFT,
    RIGHT
};

class GameRoom : public QWidget
{
    Q_OBJECT
public:
    explicit GameRoom(QWidget *parent = nullptr);
    void paintEvent(QPaintEvent *event);

    // 蛇的移动
    void moveUP();
    void moveDOWN();
    void moveLEFT();
    void moveRIGHT();

    // 判断游戏是否结束
    bool checkFail();

    // 创建食物
    void creatFood();

    void setTimeout(int timeout)
    {
        moveTimeout = timeout;
    }

private:
    const int kSnakeNodeWight = 20; // 表示蛇身体节点的宽度
    const int kSnakeNodeHeight = 20; // 表示蛇身体节点的长度
    const int kDefaultTimeout = 200; // 蛇默认移动速度

    QList<QRectF> snakeList; // 表示蛇链表
    QRectF foodRect; // 表示食物节点

    SnakeDirect moveDirect = SnakeDirect::UP; // 蛇默认移动方向向上
    QTimer* timer; // 定时器
    bool isGameStart = false; // 判断游戏是否开始
    QSound* sound;

    int moveTimeout = kDefaultTimeout;
};

#endif // GAMEROOM_H
